﻿using CPETwit.Data;
using CPETwit.Data.Entity;
using CPETwit.Data.Manager;
using System.Collections.Generic;
using System.Linq;

namespace CPETwit.Web.Business
{
    public class AuthentificationBusiness
    {
        UserManager GlobalUserManager;

        /// <summary>
        /// Vérification du mot de passe pour un utilisateur via son login
        /// </summary>
        /// <param name="login"></param>
        /// <param name="password"></param>
        /// <returns>Vrai si le login et mot de passe correspondent</returns>
        public bool CheckLoginAndPassword(string login, string password)
        {
            UserManager userManager = this.getUserManager();
            IEnumerable<User> listUserToTest = userManager.GetUserByLogin(login);

            if (listUserToTest != null && listUserToTest.Count() == 1)
            {
                User userToTest = listUserToTest.First();

                if (userToTest.password.Equals(password))
                    return true;
                return false;
            }
            if (listUserToTest != null && !listUserToTest.Any())
                return false;
            throw new System.Exception("Deux utilisateur avec le même login ?");
        }

        /// <summary>
        /// Permet de renvoyer un email à l'utilisateur pour son mot de passe
        /// </summary>
        /// <param name="mail"></param>
        /// <returns></returns>
        public bool sendMessageByMailForPassword(string mail)
        {

            return true;
        }


        /// <summary>
        /// Retourne le manager utilisateur instancié
        /// </summary>
        /// <returns></returns>
        private UserManager getUserManager()
        {
            if (this.GlobalUserManager == null)
            {
                this.GlobalUserManager = new UserManager();
            }
            return this.GlobalUserManager;
        }
    }
}
